<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-system-gmp" role="wrap">
  <?dbhtml filename="gmp.html"?>

  <sect1info condition="script">
    <productname>gmp</productname>
    <productnumber>&gmp-version;</productnumber>
    <address>&gmp-url;</address>
  </sect1info>

  <title>GMP-&gmp-version;</title>

  <indexterm zone="ch-system-gmp">
    <primary sortas="a-GMP">GMP</primary>
  </indexterm>

  <sect2 role="package">
    <title/>

    <para>Библиотека GMP (GNU Multi-Precision Library ), предназначенная для вычислений с плавающей запятой, целыми и рациональными числами с произвольной точностью. Библиотека широко используется в криптографических целях и для компьютерных вычислений. Данная библиотека необходима для сборки gcc.</para>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&gmp-ch6-sbu;</seg>
        <seg>&gmp-ch6-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>Установка пакета GMP</title>

    <note>
      <para>Если вы выполняете сборку для 32-битной машины x86,но у вас процессор, который совместим и может выполнять 64-битные инструкции и указана переменная окружения <envar>CFLAGS</envar>, сценарий конфигурирования будет запускаться для 64-битной системы и в результате процесс завершиться с ошибкой. Такого поведения можно избежать, если запустить команду configure, как указано ниже:
<screen role="nodump"><userinput><parameter>ABI=32</parameter> ./configure ...</userinput></screen></para>
    </note>

    <note>
      <para>Значения по умолчанию GMP создают библиотеки оптимизированные для процессора хост-системы. Если библиотеки, подходящие для процессоров, не  желательны, чем  процессор хост-системы, то общие библиотеки могут быть созданы следующим образом:

<screen role="nodump"><userinput>cp -v configfsf.guess config.guess
cp -v configfsf.sub   config.sub</userinput></screen></para>
    </note>

    <para>Подготовьте пакет GMP к компиляции:</para>

<screen><userinput remap="configure">./configure --prefix=/usr    \
            --enable-cxx     \
            --disable-static \
            --docdir=/usr/share/doc/gmp-&gmp-version;</userinput></screen>

    <variablelist>
      <title>Значения новых параметров конфигурации:</title>

      <varlistentry>
        <term><parameter>--enable-cxx</parameter></term>
        <listitem>
          <para>Аргумент включает поддержку языка Си++ </para>
        </listitem>
      </varlistentry>

      <varlistentry>
        <term><parameter>--docdir=/usr/share/doc/gmp-&gmp-version;</parameter></term>
        <listitem>
          <para>Значение этого аргумента указывает на правильное  местоположение документации</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <para>Выполните компиляцию пакета, и сгенерируйте HTML документацию:</para>

<screen><userinput remap="make">make
make html</userinput></screen>

    <important>
      <para>Выполнение тестов пакета GMP считается критичным.
       Не пропускайте их выполнение ни при каких обстоятельствах.</para>
    </important>

    <para>Для выполнения тестов, выполните команду:</para>

<screen><userinput remap="test">make check 2>&amp;1 | tee gmp-check-log</userinput></screen>

    <caution><para>Код, скомпилированный пакетом очень сильно оптимизирован для того процессора, на котором он был скомпилирован. Иногда код, который считывает процессор, неверно идентифицирует возможности системы и будут возникать ошибки в тестах или других программах, использующих библиотеки gmp, с сообщением "Illegal instruction". В таком случае, необходимо выполнить повторную конфигурацию пакета с аргументом --build=x86_64-unknown-linux-gnu и выполнить сборку повторно.</para></caution>

    <para>убедитесь, что все 190 тестов в наборе прошли успешно. Проверьте результаты тестирования, выполнив следующую команду:</para>

<screen><userinput remap="test">awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log</userinput></screen>

    <para>Установите пакет и его документацию:</para>

<screen><userinput remap="install">make install
make install-html</userinput></screen>

  </sect2>

  <sect2 id="contents-gmp" role="content">
    <title>Содержимое пакета GMP</title>

    <segmentedlist>
      <segtitle>Установленные библиотеки</segtitle>
      <segtitle>Каталог установки</segtitle>

      <seglistitem>
        <seg>libgmp.so and libgmpxx.so</seg>
        <seg>/usr/share/doc/gmp-&gmp-version;</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Краткое описание</bridgehead>
      <?dbfo list-presentation="list"?>
      <?dbhtml list-presentation="table"?>

      <varlistentry id="libgmp">
        <term><filename class="libraryfile">libgmp</filename></term>
        <listitem>
          <para>Содержит функции предназначенные для вычислений с плавающей запятой, целыми и рациональными числами с произвольной точностью.</para>
          <indexterm zone="ch-system-gmp libgmp">
            <primary sortas="c-libgmp">libgmp</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libgmpxx">
        <term><filename class="libraryfile">libgmpxx</filename></term>
        <listitem>
          <para>Содержит функции для языка Си++ предназначенные для вычислений с плавающей запятой, целыми и рациональными числами с произвольной точностью.</para>
          <indexterm zone="ch-system-gmp libgmpxx">
            <primary sortas="c-libgmpxx">libgmpxx</primary>
          </indexterm>
        </listitem>
      </varlistentry>
    </variablelist>

  </sect2>

</sect1>
